cgi
Otázka od: Tomáš Čejka
29. 9. 2002 17:49
Nemel by prosim vas nekdo z vas nejakej help, nebo priklad s popisem
(nejlip v cestine) na cgi skript? (Potreboval bych udelat webove
pocitadlo, ale nevim jak na to. Hlavne se to musi rychle nacitat.)
Diky Tomas
Odpovedá: Martin
29. 9. 2002 18:21
Dobrý den,
29. září 2002, 18:44:43, napsal jste:
TČ> Nemel by prosim vas nekdo z vas nejakej help, nebo priklad s popisem
TČ> (nejlip v cestine) na cgi skript? (Potreboval bych udelat webove
TČ> pocitadlo, ale nevim jak na to. Hlavne se to musi rychle nacitat.)
TČ> Diky Tomas
Tak si ho napis v PHP nebo se podivej tady http://www.hotscripts.com/
--
S pozdravem,
Martin
martin@aprog.cz
Odpovedá: Tomáš Čejka
29. 9. 2002 18:56
Bohuzel s php neumim.
-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz] On
Behalf Of Martin
Sent: Sunday, September 29, 2002 7:16 PM
To: Tomáš Čejka
Subject: Re: cgi
Dobrý den,
29. září 2002, 18:44:43, napsal jste:
TČ> Nemel by prosim vas nekdo z vas nejakej help, nebo priklad s popisem
TČ> (nejlip v cestine) na cgi skript? (Potreboval bych udelat webove
TČ> pocitadlo, ale nevim jak na to. Hlavne se to musi rychle nacitat.)
TČ> Diky Tomas
Tak si ho napis v PHP nebo se podivej tady http://www.hotscripts.com/
--
S pozdravem,
Martin
martin@aprog.cz
Odpovedá: Viliam Mlich
30. 9. 2002 16:36
> Nemel by prosim vas nekdo z vas nejakej help, nebo priklad s popisem
> (nejlip v cestine) na cgi skript?
Na to ziaden help nepotrebujes. CGI-skript je program ako kazdy iny,
akurat v STDIN (nacitas pomocou read) dostane parametre a do STDOUT
vratis vystup (pomocou 'writeln').
Takto nejak vypada zaciatok:
=== cut begin TESTCGI.DPR ===
program testcgi;
{$APPTYPE CONSOLE}
uses
SysUtils, windows, ShellAPI;
var
input : string;
... atd ...
begin
Writeln('Content-type: text/html',#13,#10); //rika ze vystup je HTML
if (Pos('GET',GetEnvVar('REQUEST_METHOD')) > 0)
then input:=GetEnvVar('QUERY_STRING')
else if (Pos('POST',GetEnvVar('REQUEST_METHOD')) > 0)
then read(input)
else begin
read(input);
input:=input+'&'+GetEnvVar('QUERY_STRING');
end;
... atd ...
Este je problem povyberat z toho vstupneho streamu parametre, ja to
robim takto:
function hodnota_parametru (const jmeno: string):string;
var
zacatek, konec : integer;
begin
zacatek:=Pos((jmeno+'='),input);
if zacatek = 0 //ked neni vobec parameter
then begin
Result:='';
Exit;
end;
zacatek:=zacatek+Length(jmeno)+1; // "+1" je "="
Result:=copy(input,zacatek,Length(input)-zacatek+1); //keby nebol "&"
konec:=pos('&',Result)-1;
if konec>0
then Result := copy(Result,1,konec) // ked je "&" 2.
else if konec = 0 then result:=''; // ked je "&" hned
Result:=DecodeURL(Result);
end;
V pokrocilejsich verziach delphi je na to aj nejaka komponenta, ale
nejak som sa s nou neskamaratil, nerad pouzivam veci, do ktorych nevidim
a na moj vkus to bolo prilis zlozite. To 'DecodeURL' prevadza znaky,
ktore su vo vstupnom stringu ako '%9F' na normalny znak:
function DecodeURL(const Value: string): string;
var
x: Integer;
c: Char;
s: string;
begin
Result := '';
x := 1;
while x <= Length(Value) do
begin
c := Value[x];
Inc(x);
if c <> '%' then
if c = '+'
then Result:=Result+' '
else Result := Result + c
else
if x < Length(Value) then
begin
s := Copy(Value, x, 2);
Inc(x, 2);
if pos(#13, s) + pos(#10, s) = 0 then
Result := Result + Char(StrToIntDef('$' + s, 32));
end;
end;
end;
bye
vmlich
Odpovedá: Martin
29. 9. 2002 21:24
Tak si to pocitadlo stahni. Napr.
http://www.ekstreme.com/phplabs/phpcounter.zip
Kdyz se podivas na www.hotscripts.com tak tam najdes spoustu skriptu
nejen v PHP, ale i v Perlu.
TČ> Bohuzel s php neumim.
--
S pozdravem,
Martin
martin@aprog.cz
Odpovedá: Martin
30. 9. 2002 20:57
VM> Na to ziaden help nepotrebujes. CGI-skript je program ako kazdy iny,
VM> akurat v STDIN (nacitas pomocou read) dostane parametre a do STDOUT
VM> vratis vystup (pomocou 'writeln').
Ono zalezi na tom, jaky system je na serveru. Pokud mas hosting, tak
je tam s nejvetsi pravdepodobnosti Linux a tam tvuj kod nepobezi.
Pocitadlo pristupu bych opravdu radeji delal v PHP nebo Perlu. Pak mam
jistotu, ze to pobezi jak na Linuxu, tak na Win.
Martin